package pl.gettoknowme.mobile.android.model;

import pl.gettoknowme.mobile.android.model.dao.IntegrationDAO;
import pl.gettoknowme.mobile.android.model.dao.LocationDAO;
import pl.gettoknowme.mobile.android.model.dao.UserSettingsDAO;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;

/**
 * Adapter dostępu do bazy danych aplikacji
 * @author Michał Kołodziejski
 */
public class DBAdapter {
        
    /**
     * Instancja klasy
     */
    private static DBAdapter dbAdapter;
    
    /**
     * Uchwyt do bazy danych
     */
    private SQLiteDatabase db;
    
    
    /**
     * Tworzy adapter dostępu do bazy danych
     * @param context kontekst
     */
    private DBAdapter(Context context) {
        if(db == null){
            DBOpenHelper dbOpenHelper = new DBOpenHelper(context);
            db = dbOpenHelper.getWritableDatabase();
        }
    }
    
    /**
     * Zwraca instancję klasy
     * @param context kontekst
     * @return instancja klasy
     */
    public static synchronized DBAdapter getInstance(Context context){
        if(dbAdapter == null){
            dbAdapter = new DBAdapter(context);
        }
        return dbAdapter;
    }
    
    /**
     * Zwraca UserSettingsDAO
     * @return UserSettingsDAO
     */
    public UserSettingsDAO getUserSettingsDAO(){
        return new UserSettingsDAO(db);
    }
    
    /**
     * Zwraca LocationDAO
     * @return LocationDAO
     */
    public LocationDAO getLocationDAO(){
        return new LocationDAO(db);
    }
    
    /**
     * Zwraca IntegrationDAO
     * @return IntegrationDAO
     */
    public IntegrationDAO getIntegrationDAO(){
        return new IntegrationDAO(db);
    }
}
